home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-06-17 | 52.1 KB | 2,421 lines |
-
- ;HRTmon Amiga system monitor
- ;Copyright (C) 1991-1998 Alain Malek Alain.Malek@cryogen.com
- ;
- ;This program is free software; you can redistribute it and/or
- ;modify it under the terms of the GNU General Public License
- ;as published by the Free Software Foundation; either version 2
- ;of the License, or (at your option) any later version.
- ;
- ;This program is distributed in the hope that it will be useful,
- ;but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;GNU General Public License for more details.
- ;
- ;You can find the full GNU GPL online at: http://www.gnu.org
-
-
- ;assembler from Beermon modified for HRTmon
- ;68000-68040/FPU/MMU
-
- ;-> a0=ptr on string
- ;-> a1=address where to assemble
- ;<- d0: 0=ok -1=error
- ;<- opcode in op68000 & len-1.w in oplen
-
- ;oplen dc.w 0 ;nb word for instr.-1
- ;op68000 dc.w 0,0,0,0,0 ;assembled instr. here !!
-
- ;s * only for test *
- ; lea.l linebufBMON,a0
- ; lea.l $1f0000,a1
- ; bsr.w assemble
- ; rts
- ;linebufBMON dc.b "lea ($1f0020,pc),a0"
- ; dcb.b 80,0
- ;lineeofBMON dc.b 0
- ; even
-
- ifnd baseBMON
- baseBMON
- endc
-
- ifnd s67BMON
- s67BMON =$0000
- s6BMON =$0100
- s8BMON =$0200
- stabBMON=$0300
- snopBMON=$0400
- s9a_BMON=$0500 ;68020 cas
- s9aBMON =$0600 ;68020 chk2,cmp2
- endc
-
- assemble: movem.l d1-d7/a0-a6,-(a7)
-
- lea.l baseBMON,a6
-
- move.l a1,paraBMON
-
- move.l a0,a2
- .seek tst.b (a2)+
- bne.b .seek ;seek end of line
- subq.l #1,a2
- move.l a2,lineendBMON
-
- move.l a0,a5 ;cmdadr!
- nn3BMON: cmp.l lineendBMON,a0
- bhi.b nn4BMON
- move.b (a0)+,d0
- cmp.b #"Z",d0
- bhi.b nn3BMON
- cmp.b #"A",d0
- bcs.b nn3BMON
- bset #5,d0 ;go lower case
- move.b d0,-1(a0)
- bra.b nn3BMON
- nn4BMON: lea instrBMON(pc),a4
- nn7BMON:
- ; btst #0,paraBMON+3 ;test if even address ?
- ; bne.b nassq
- ; cmp.b #"-",(a5) ;line?
- ; beq.w ignline
- move.l a5,a0
- lea 6(a4),a1
- nn6BMON: move.b (a1),d0
- bclr #7,d0
- cmp.b (a0)+,d0
- bne.w nn5BMON
- btst #7,(a1)+
- beq.b nn6BMON
-
- lea op68000-2,a1
- clr.l lginstrBMON ;0:2byte instrBMON,2:4byte (mulx.l...)
- clr.w (a1)+ ;oplen!
- clr.w (a1)
- move.w 4(a4),d0 ;info
- and.w #$700,d0
- cmp.w #snopBMON,d0
- beq.w nnsnopBMON
- cmp.w #stabBMON,d0
- ;bne.b nnstabBMON
- beq.w nn9BMON
- nnstabBMON: cmp.b #".",(a0)+
- bne.w nn5BMON
- cmp.w #s67BMON,d0
- bne.b nns67BMON
- sf imsizeBMON ;%00
- cmp.b #"b",(a0)+ ;op68000:0
- beq.w nn9BMON
- addq.b #1,imsizeBMON ;%01
- move.w #%01000000,(a1)
- cmp.b #"w",-1(a0)
- beq.w nn9BMON
- addq.b #1,imsizeBMON ;%10
- move.w #%10000000,(a1)
- cmp.b #"l",-1(a0)
- beq.w nn9BMON
- nns67BMON: cmp.w #s9a_BMON,d0 ;68020 cas
- bne.b nns9a_BMON
- sf imsizeBMON ;%00
- move.w #%01000000000,(a1) ;68020
- cmp.b #"b",(a0)+ ;op68000:0
- beq.w nn9BMON
- addq.b #1,imsizeBMON ;%01
- move.w #%10000000000,(a1)
- cmp.b #"w",-1(a0)
- beq.w nn9BMON
- addq.b #1,imsizeBMON ;%10
- move.w #%11000000000,(a1)
- cmp.b #"l",-1(a0)
- beq.w nn9BMON
- nns9a_BMON: cmp.w #s9aBMON,d0 ;68020 chk2,cmp2
- bne.b nns9aBMON
- sf imsizeBMON ;%00
- cmp.b #"b",(a0)+ ;op68000:0
- beq.w nn9BMON
- addq.b #1,imsizeBMON ;%01
- move.w #%01000000000,(a1)
- cmp.b #"w",-1(a0)
- beq.w nn9BMON
- addq.b #1,imsizeBMON ;%10
- move.w #%10000000000,(a1)
- cmp.b #"l",-1(a0)
- beq.b nn9BMON
- nns9aBMON: cmp.w #s6BMON,d0
- bne.b nns6BMON
- move.b #%01,imsizeBMON
- cmp.b #"w",(a0)+
- beq.b nn9BMON
- addq.b #1,imsizeBMON ;%10
- move.w #%1000000,(a1)
- cmp.b #"l",-1(a0)
- beq.b nn9BMON
- nns6BMON: cmp.w #s8BMON,d0
- bne.b nn5BMON ;ill instrtab or cmd
- move.b #%01,imsizeBMON
- cmp.b #"w",(a0)+
- beq.b nn9BMON
- addq.b #1,imsizeBMON ;%10
- move.w #%100000000,(a1)
- cmp.b #"l",-1(a0)
- bne.b nn5BMON
- nn9BMON: cmp.b #" ",(a0)
- bne.b nn5BMON
- nn10BMON: addq.w #1,a0
- cmp.l lineendBMON,a0
- bhi.b nn5BMON
- cmp.b #" ",(a0)
- beq.b nn10BMON
-
- nnsnopBMON: st d7
- move.l a0,a3
- move.w 4(a4),d0
- ext.w d0 ;no a4,a5
- add.w d0,d0
- lea assoffsBMON(pc),a0
- move.w (a0,d0.w),d0
- lea assubsBMON(pc),a0
-
- jsr (a0,d0.w) ;a4:instrtabentry,a5:cmdtxt,a3:cnttxt
- ;a6:notmodify!!
- tst.b d7
- bne.b nn8BMON
- nn5BMON: sf d7
- tst.l (a4)
- beq.b nretryBMON ;unknown
- lea 14(a4),a4
- bra.w nn7BMON
- nn8BMON:
-
- lea op68000,a0
- move.w (a0),d1
- or.w 2(a4),d1
- move.w d1,(a0)
-
- moveq #0,d0 ;ok!
- ass_outBMON movem.l (a7)+,d1-d7/a0-a6
- rts
-
- nretryBMON moveq #-1,d0 ;unknown instruction
- bra.b ass_outBMON
-
- ;---------------------------------------------------------------
- ifnd longtoaBMON
-
- longtoaBMON: movem.l d0-d2,-(a7)
- moveq #8-1,d2
- lta0BMON: rol.l #4,d0
-
- moveq #$0f,d1
- and.w d0,d1
- move.b l2asciiBMON(pc,d1.w),(a0)+
- dbf d2,lta0BMON
- movem.l (a7)+,d0-d2
- rts
- l2asciiBMON:dc.b "0123456789abcdef"
- ;---------------------------------------------------------------
- atolong_BMON: cmp.b #"$",(a3)
- bne.b atolongBMON
- addq.w #1,a3
- atolongBMON: moveq #8-1,d2
- bra.b atob2BMON
- atoword_BMON: cmp.b #"$",(a3)
- bne.b atowordBMON
- addq.w #1,a3
- atowordBMON: moveq #4-1,d2
- bra.b atob2BMON
- atobyte_BMON: cmp.b #"$",(a3)
- bne.b atobyteBMON
- addq.w #1,a3
- atobyteBMON: moveq #2-1,d2
- atob2BMON: moveq #0,d0
- atob1BMON: move.b (a3),d1
- cmp.b #"f",d1
- bhi.b atob3BMON
- sub.b #"0",d1
- bcs.b atob3BMON
- cmp.b #9,d1
- bls.b atob0BMON
- cmp.b #"a"-"0",d1
- bcs.b atob3BMON
- sub.b #"a"-"0"-10,d1
- atob0BMON: lsl.l #4,d0
- or.b d1,d0
- addq.w #1,a3
- dbf d2,atob1BMON
- atob3BMON: tst.l d0
- rts
- atodnibBMON:moveq #0,d0 ;0-99
- move.b (a3),d1
- sub.b #"0",d1
- bcs.b atdnb0BMON
- cmp.b #9,d1
- bhi.b atdnb0BMON
- addq.w #1,a3
- move.b d1,d0
- move.b (a3),d1
- sub.b #"0",d1
- bcs.b atdnb0BMON
- cmp.b #9,d1
- bhi.b atdnb0BMON
- addq.w #1,a3
- mulu #10,d0
- add.b d1,d0
- atdnb0BMON: tst.b d0
- rts
- atodlongBMON:
- moveq #0,d0
- moveq #0,d1
- moveq #10-1,d2
- atol1BMON: move.b (a3),d1
- sub.b #"0",d1
- bcs.b atodl0BMON
- cmp.b #9,d1
- bhi.b atodl0BMON
- addq.w #1,a3
- add.l d0,d0 ;*2
- move.l d0,-(a7)
- lsl.l #2,d0 ;*2*4
- add.l (a7)+,d0
- add.l d1,d0
- dbf d2,atol1BMON
- atodl0BMON: rts
-
- endc
- ;---------------------------------------------------------------
- skipspcBMON:cmp.b #" ",(a0)
- bne.b fnspc0BMON
- addq.w #1,a0
- bra.b skipspcBMON
- findspcBMON:cmp.b #" ",(a0)
- beq.b fnspc0BMON
- addq.w #1,a0
- bra.b findspcBMON
- fnspc0BMON: cmp.l lineendBMON,a0 ;bhi.b eol
- rts
- ;---------------------------------------------------------------
- ifnd instrBMON
-
- instrBMON: dc.w $ffff,$4afc,snopBMON!xnoopsBMON
- dc.b "illega","l"+128,0
- dc.w $ffff,$4e70,snopBMON!xnoopsBMON
- dc.b "rese","t"+128,0,0,0
- dc.w $ffff,$4e71,snopBMON!xnoopsBMON
- dc.b "no","p"+128,0,0,0,0,0
- dc.w $ffff,$4e73,snopBMON!xnoopsBMON
- dc.b "rt","e"+128,0,0,0,0,0
- dc.w $ffff,$4e75,snopBMON!xnoopsBMON
- dc.b "rt","s"+128,0,0,0,0,0
- dc.w $ffff,$4e77,snopBMON!xnoopsBMON
- dc.b "rt","r"+128,0,0,0,0,0
- dc.w $ffff,$4afa,snopBMON!xnoopsBMON ;cpu32 only
- dc.b "bgn","d"+128,0,0,0,0
-
- dc.w $ffc0,$f200,snopBMON!xfpuBMON ;68881
- dc.b "f"+128,0,0,0,0,0,0,0
- dc.w $ffc0,$f200,stabBMON!xfmovelBMON ;68881
- dc.b "fmove.","l"+128,0
- dc.w $ffc0,$f200,stabBMON!xfmovemlBMON ;68881
- dc.b "fmovem.","l"+128
- dc.w $ffc0,$f200,stabBMON!xfmovemxBMON ;68881
- dc.b "fmovem.","x"+128
- dc.w $ffff,$f200,stabBMON!xfmovecrBMON ;68881
- dc.b "fmovec","r"+128,0
- dc.w $ffff,$f280,snopBMON!xfnopBMON ;68881
- dc.b "fno","p"+128,0,0,0,0
- dc.w $ffff,$f510,snopBMON!xnoopsBMON ;68040 only!
- dc.b "pflusha","n"+128
- dc.w $ffff,$f518,snopBMON!xnoopsBMON ;68040 only!
- dc.b "pflusha","!"+128
- dc.w $ffff,$f000,snopBMON!xpflushaBMON ;68020 order!
- dc.b "pflush","a"+128,0
- dc.w $ffff,$f000,stabBMON!xpflushsBMON ;68851 only order!
- dc.b "pflush","s"+128,0
- dc.w $ffc0,$f000,stabBMON!xpflushrBMON ;68851 only order!
- dc.b "pflush","r"+128,0
- dc.w $fff8,$f500,stabBMON!xpflush40BMON ;68040 only!
- dc.b "pflush","n"+128,0
- dc.w $fff8,$f508,stabBMON!xpflush40BMON ;68040 only!
- dc.b "pflus","h"+128,0,0
- dc.w $fff8,$f548,stabBMON!xpflush40BMON ;68040 only!
- dc.b "ptest","w"+128,0,0
- dc.w $fff8,$f568,stabBMON!xpflush40BMON ;68040 only!
- dc.b "ptest","r"+128,0,0
-
- dc.w $ffff,$f000,stabBMON!xpflushBMON ;68020 order!
- dc.b "pflus","h"+128,0,0
- dc.w $ffc0,$f000,stabBMON!xpvalidBMON ;68851 only
- dc.b "pvali","d"+128,0,0
-
- dc.w $ffff,$003c,stabBMON!xiwordtoccrBMON
- dc.b "or","i"+128,0,0,0,0,0
- dc.w $ffff,$023c,stabBMON!xiwordtoccrBMON
- dc.b "and","i"+128,0,0,0,0
- dc.w $ffff,$0a3c,stabBMON!xiwordtoccrBMON
- dc.b "eor","i"+128,0,0,0,0
-
- dc.w $ffff,$007c,stabBMON!xiwordtosrBMON
- dc.b "or","i"+128,0,0,0,0,0
- dc.w $ffff,$027c,stabBMON!xiwordtosrBMON
- dc.b "and","i"+128,0,0,0,0
- dc.w $ffff,$0a7c,stabBMON!xiwordtosrBMON
- dc.b "eor","i"+128,0,0,0,0
-
- dc.w $f1f8,$c140,stabBMON!xdx9btodx02BMON
- dc.b "ex","g"+128,0,0,0,0,0
- dc.w $f1f8,$c148,stabBMON!xax9btoax02BMON
- dc.b "ex","g"+128,0,0,0,0,0
- dc.w $f1f8,$c188,stabBMON!xdx9btoax02BMON
- dc.b "ex","g"+128,0,0,0,0,0
-
- dc.w $fff8,$4e58,stabBMON!xiunlkBMON
- dc.b "unl","k"+128,0,0,0,0
- dc.w $fff8,$4808,stabBMON!xilinklgBMON ;68020
- dc.b "link.","l"+128,0,0
- dc.w $fff8,$4e50,stabBMON!xilinkBMON
- dc.b "lin","k"+128,0,0,0,0
-
- dc.w $fff8,$4848,stabBMON!xbkptBMON ;68020
- dc.b "bkp","t"+128,0,0,0,0
-
- dc.w $f1f0,$8140,stabBMON!xpackBMON ;68020
- dc.b "pac","k"+128,0,0,0,0
- dc.w $f1f0,$8180,stabBMON!xpackBMON ;68020
- dc.b "unp","k"+128,0,0,0,0
-
- dc.w $fff0,$4e40,stabBMON!xitrapBMON
- dc.b "tra","p"+128,0,0,0,0
-
- dc.w $f100,$7000,stabBMON!ximoveqBMON
- dc.b "move","q"+128,0,0,0
-
- dc.w $ffff,$f800,stabBMON!xlpstopBMON ;cpu32 only
- dc.b "lpsto","p"+128,0,0
- dc.w $ffff,$4e72,stabBMON!xiwordBMON
- dc.b "sto","p"+128,0,0,0,0
- dc.w $ffff,$4e74,stabBMON!xiwordBMON ;68010
- dc.b "rt","d"+128,0,0,0,0,0
-
- dc.w $fdff,$0cfc,snopBMON!xcas2BMON ;68020
- dc.b "cas2","."+128,0,0,0
-
- dc.w $fff8,$4840,stabBMON!xsrcdx02BMON
- dc.b "swa","p"+128,0,0,0,0
- dc.w $fff8,$49c0,stabBMON!xsrcdx02BMON ;68020
- dc.b "ext","b"+128,0,0,0,0
- dc.w $ffb8,$4880,s6BMON!xsrcdx02BMON
- dc.b "ex","t"+128,0,0,0,0,0
-
- dc.w $fff0,$06c0,stabBMON!xrx03BMON ;68020
- dc.b "rt","m"+128,0,0,0,0,0
- ;????
- dc.w $fffe,$f07a,snopBMON!xpccodesizeBMON ;68851 only order!
- dc.b "ptra","p"+128,0,0,0
- dc.w $ffff,$f07c,snopBMON!xpccodeBMON ;68851 only order!
- dc.b "ptra","p"+128,0,0,0
- dc.w $fffe,$f27a,snopBMON!xfccodesizeBMON ;68881 order!
- dc.b "ftra","p"+128,0,0,0
- dc.w $ffff,$f27c,snopBMON!xfccodeBMON ;68881 order!
- dc.b "ftra","p"+128,0,0,0
- dc.w $f0fe,$50fa,snopBMON!xccodesizeBMON ;68020 order!
- dc.b "tra","p"+128,0,0,0,0
- dc.w $f0ff,$50fc,snopBMON!xccodeBMON ;68020 order!
- dc.b "tra","p"+128,0,0,0,0
- dc.w $ffff,$4e76,snopBMON!xnoopsBMON ;order!
- dc.b "trap","v"+128,0,0,0
- ;????
- dc.w $ff3f,$f418,stabBMON!xidbcacBMON ;68040
- dc.b "cinv","a"+128,0,0,0
- dc.w $ff38,$f408,stabBMON!xidbindBMON ;68040
- dc.b "cinv","l"+128,0,0,0
- dc.w $ff38,$f410,stabBMON!xidbindBMON ;68040
- dc.b "cinv","p"+128,0,0,0
- dc.w $ff3f,$f438,stabBMON!xidbcacBMON ;68040
- dc.b "cpush","a"+128,0,0
- dc.w $ff38,$f428,stabBMON!xidbindBMON ;68040
- dc.b "cpush","l"+128,0,0
- dc.w $ff38,$f430,stabBMON!xidbindBMON ;68040
- dc.b "cpush","p"+128,0,0
- dc.w $fff8,$f620,stabBMON!xmov16BMON ;68040 order!
- dc.b "move1","6"+128,0,0
- dc.w $ffe0,$f600,stabBMON!xmov162BMON ;68040
- dc.b "move1","6"+128,0,0
-
- dc.w $f138,$b108,s67BMON!xicmpmBMON
- dc.b "cmp","m"+128,0,0,0,0
-
- dc.w $f1f0,$c100,stabBMON!xxbcdBMON
- dc.b "abc","d"+128,0,0,0,0
- dc.w $f1f0,$8100,stabBMON!xxbcdBMON
- dc.b "sbc","d"+128,0,0,0,0
-
- dc.w $f130,$d100,s67BMON!xsize67adsbxBMON
- dc.b "add","x"+128,0,0,0,0
- dc.w $f130,$9100,s67BMON!xsize67adsbxBMON
- dc.b "sub","x"+128,0,0,0,0
-
- dc.w $ffc0,$f000,stabBMON!xpmovefdBMON ;68030 only
- dc.b "pmovef","d"+128,0
- dc.w $ffc0,$f000,stabBMON!xpmoveBMON ;68020
- dc.b "pmov","e"+128,0,0,0
- dc.w $ffc0,$f000,snopBMON!xploadBMON ;68020
- dc.b "ploa","d"+128,0,0,0
- dc.w $ffc0,$f000,snopBMON!xptestBMON ;68020
- dc.b "ptes","t"+128,0,0,0
-
- dc.w $ffc0,$e8c0,stabBMON!xbfieldBMON ;68020
- dc.b "bfts","t"+128,0,0,0
- dc.w $ffc0,$eac0,stabBMON!xbfieldBMON ;68020
- dc.b "bfch","g"+128,0,0,0
- dc.w $ffc0,$ecc0,stabBMON!xbfieldBMON ;68020
- dc.b "bfcl","r"+128,0,0,0
- dc.w $ffc0,$eec0,stabBMON!xbfieldBMON ;68020
- dc.b "bfse","t"+128,0,0,0
- dc.w $ffc0,$e9c0,stabBMON!xbfieldtodxBMON ;68020
- dc.b "bfext","u"+128,0,0
- dc.w $ffc0,$ebc0,stabBMON!xbfieldtodxBMON ;68020
- dc.b "bfext","s"+128,0,0
- dc.w $ffc0,$edc0,stabBMON!xbfieldtodxBMON ;68020
- dc.b "bfff","o"+128,0,0,0
- dc.w $ffc0,$efc0,stabBMON!xdxtobfieldBMON ;68020
- dc.b "bfin","s"+128,0,0,0
-
- dc.w $ffc0,$06c0,stabBMON!xcallmBMON ;68020
- dc.b "call","m"+128,0,0,0
-
- dc.w $ffc0,$40c0,stabBMON!xsrtoeaBMON
- dc.b "mov","e"+128,0,0,0,0
- dc.w $ffc0,$42c0,stabBMON!xccrtoeaBMON ;68010
- dc.b "mov","e"+128,0,0,0,0
- dc.w $ffc0,$44c0,stabBMON!xeatoccrBMON
- dc.b "mov","e"+128,0,0,0,0
- dc.w $ffc0,$46c0,stabBMON!xeatosrBMON
- dc.b "mov","e"+128,0,0,0,0
-
- dc.w $fff0,$4e60,stabBMON!ximuspBMON
- dc.b "mov","e"+128,0,0,0,0
-
- dc.w $fffe,$4e7a,stabBMON!ximovecBMON ;68010
- dc.b "move","c"+128,0,0,0
-
- dc.w $fb80,$4880,s6BMON!ximovemBMON
- dc.b "move","m"+128,0,0,0
-
- dc.w $f138,$0108,s6BMON!xsize6movepBMON
- dc.b "move","p"+128,0,0,0
-
- dc.w $ffc0,$f800,snopBMON!xtblBMON ;cpu32 only
- dc.b "tb","l"+128,0,0,0,0,0
-
- dc.w $f1c0,$41c0,stabBMON!xeatoaxBMON
- dc.b "le","a"+128,0,0,0,0,0
-
- dc.w $ffff,$60ff,stabBMON!xlongbxxBMON ;68020
- dc.b "bra.","l"+128,0,0,0
- dc.w $ffff,$61ff,stabBMON!xlongbxxBMON ;68020
- dc.b "bsr.","l"+128,0,0,0
- dc.w $ffff,$6000,stabBMON!xwordbxxBMON
- dc.b "bra.","w"+128,0,0,0
- dc.w $ffff,$6100,stabBMON!xwordbxxBMON
- dc.b "bsr.","w"+128,0,0,0
- dc.w $ff00,$6000,stabBMON!xshortbxxBMON ;order !
- dc.b "bra.","b"+128,0,0,0
- dc.w $ff00,$6000,stabBMON!xshortbxxBMON ;order !
- dc.b "bra.","s"+128,0,0,0 ;clone
- dc.w $ff00,$6100,stabBMON!xshortbxxBMON
- dc.b "bsr.","b"+128,0,0,0
- dc.w $ff00,$6100,stabBMON!xshortbxxBMON
- dc.b "bsr.","s"+128,0,0,0 ;clone
- dc.w $ffb0,$f080,snopBMON!xbrapccBMON ;68851 only
- dc.b "p","b"+128,0,0,0,0,0,0
- dc.w $ffa0,$f280,snopBMON!xbrafccBMON ;68881
- dc.b "f","b"+128,0,0,0,0,0,0
- dc.w $f0ff,$60ff,snopBMON!xlongccBMON ;68020
- dc.b "b"+128,0,0,0,0,0,0,0
- dc.w $f0ff,$6000,snopBMON!xwordccBMON
- dc.b "b"+128,0,0,0,0,0,0,0
- dc.w $f000,$6000,snopBMON!xshortccBMON
- dc.b "b"+128,0,0,0,0,0,0,0
-
- dc.w $fff8,$f048,snopBMON!xpccodewordrelBMON ;68851 only
- dc.b "pd","b"+128,0,0,0,0,0
- dc.w $ffc0,$f040,snopBMON!xpccodeeaBMON ;68851 only
- dc.b "p","s"+128,0,0,0,0,0,0
- dc.w $fff8,$f248,snopBMON!xfccodewordrelBMON ;68881
- dc.b "fd","b"+128,0,0,0,0,0
- dc.w $ffc0,$f240,snopBMON!xfccodeeaBMON ;68881
- dc.b "f","s"+128,0,0,0,0,0,0
-
- dc.w $f0f8,$50c8,snopBMON!xccodewordrelBMON ;order !
- dc.b "d","b"+128,0,0,0,0,0,0
- dc.w $f0c0,$50c0,snopBMON!xccodeeaBMON
- dc.b "s"+128,0,0,0,0,0,0,0
-
- dc.w $ffc0,$4800,stabBMON!xsrceaBMON
- dc.b "nbc","d"+128,0,0,0,0
- dc.w $ffc0,$4840,stabBMON!xsrceaBMON
- dc.b "pe","a"+128,0,0,0,0,0
- dc.w $ffc0,$4ac0,stabBMON!xsrceaBMON
- dc.b "ta","s"+128,0,0,0,0,0
- dc.w $ffc0,$4e80,stabBMON!xsrceaBMON
- dc.b "js","r"+128,0,0,0,0,0
- dc.w $ffc0,$4ec0,stabBMON!xsrceaBMON
- dc.b "jm","p"+128,0,0,0,0,0
- dc.w $ffc0,$e0c0,stabBMON!xsrceaBMON
- dc.b "as","r"+128,0,0,0,0,0
- dc.w $ffc0,$e1c0,stabBMON!xsrceaBMON
- dc.b "as","l"+128,0,0,0,0,0
- dc.w $ffc0,$e2c0,stabBMON!xsrceaBMON
- dc.b "ls","r"+128,0,0,0,0,0
- dc.w $ffc0,$e3c0,stabBMON!xsrceaBMON
- dc.b "ls","l"+128,0,0,0,0,0
- dc.w $ffc0,$e4c0,stabBMON!xsrceaBMON
- dc.b "rox","r"+128,0,0,0,0
- dc.w $ffc0,$e5c0,stabBMON!xsrceaBMON
- dc.b "rox","l"+128,0,0,0,0
- dc.w $ffc0,$e6c0,stabBMON!xsrceaBMON
- dc.b "ro","r"+128,0,0,0,0,0
- dc.w $ffc0,$e7c0,stabBMON!xsrceaBMON
- dc.b "ro","l"+128,0,0,0,0,0
- dc.w $ffc0,$f100,stabBMON!xsrceaBMON ;68851 only
- dc.b "psav","e"+128,0,0,0
- dc.w $ffc0,$f140,stabBMON!xsrceaBMON ;68851 only
- dc.b "prestor","e"+128
- dc.w $ffc0,$f300,stabBMON!xsrceaBMON ;68881
- dc.b "fsav","e"+128,0,0,0
- dc.w $ffc0,$f340,stabBMON!xsrceaBMON ;68881
- dc.b "frestor","e"+128
-
- dc.w $ffc0,$4c40,stabBMON!xdivullBMON ;68020
- dc.b "divul.","l"+128,0
- dc.w $ffc0,$4c40,stabBMON!xdivsllBMON ;68020
- dc.b "divsl.","l"+128,0
- dc.w $ffc0,$4c40,stabBMON!xmululBMON ;68020
- dc.b "divu.","l"+128,0,0
- dc.w $ffc0,$4c40,stabBMON!xmulslBMON ;68020
- dc.b "divs.","l"+128,0,0
- dc.w $ffc0,$4c00,stabBMON!xmululBMON ;68020
- dc.b "mulu.","l"+128,0,0
- dc.w $ffc0,$4c00,stabBMON!xmulslBMON ;68020
- dc.b "muls.","l"+128,0,0
-
- dc.w $f1c0,$80c0,stabBMON!xeatodxBMON
- dc.b "div","u"+128,0,0,0,0
- dc.w $f1c0,$81c0,stabBMON!xeatodxBMON
- dc.b "div","s"+128,0,0,0,0
- dc.w $f1c0,$c0c0,stabBMON!xeatodxBMON
- dc.b "mul","u"+128,0,0,0,0
- dc.w $f1c0,$c1c0,stabBMON!xeatodxBMON
- dc.b "mul","s"+128,0,0,0,0
- dc.w $f1c0,$4180,stabBMON!xeatodxBMON
- dc.b "chk.","w"+128,0,0,0
- dc.w $f1c0,$4100,stabBMON!xea2todxBMON ;68020
- dc.b "chk.","l"+128,0,0,0
-
- dc.w $f0c0,$90c0,s8BMON!xsize8eatoax9bBMON
- dc.b "sub","a"+128,0,0,0,0
- dc.w $f0c0,$b0c0,s8BMON!xsize8eatoax9bBMON
- dc.b "cmp","a"+128,0,0,0,0
- dc.w $f0c0,$d0c0,s8BMON!xsize8eatoax9bBMON
- dc.b "add","a"+128,0,0,0,0
-
- dc.w $f100,$8000,s67BMON!xsize67eatodxBMON
- dc.b "o","r"+128,0,0,0,0,0,0
- dc.w $f100,$9000,s67BMON!xsize67eatodxBMON
- dc.b "su","b"+128,0,0,0,0,0
- dc.w $f100,$b000,s67BMON!xsize67eatodxBMON
- dc.b "cm","p"+128,0,0,0,0,0
- dc.w $f100,$c000,s67BMON!xsize67eatodxBMON
- dc.b "an","d"+128,0,0,0,0,0
- dc.w $f100,$d000,s67BMON!xsize67eatodxBMON
- dc.b "ad","d"+128,0,0,0,0,0
-
- dc.w $f100,$8100,s67BMON!xdxtoeaBMON
- dc.b "o","r"+128,0,0,0,0,0,0
- dc.w $f100,$9100,s67BMON!xdxtoeaBMON
- dc.b "su","b"+128,0,0,0,0,0
- dc.w $f100,$b100,s67BMON!xdxtoeaBMON
- dc.b "eo","r"+128,0,0,0,0,0
- dc.w $f100,$c100,s67BMON!xdxtoeaBMON
- dc.b "an","d"+128,0,0,0,0,0
- dc.w $f100,$d100,s67BMON!xdxtoeaBMON
- dc.b "ad","d"+128,0,0,0,0,0
-
- dc.w $ffc0,$0800,stabBMON!xinibtoeaBMON
- dc.b "bts","t"+128,0,0,0,0
- dc.w $ffc0,$0840,stabBMON!xinibtoeaBMON
- dc.b "bch","g"+128,0,0,0,0
- dc.w $ffc0,$0880,stabBMON!xinibtoeaBMON
- dc.b "bcl","r"+128,0,0,0,0
- dc.w $ffc0,$08c0,stabBMON!xinibtoeaBMON
- dc.b "bse","t"+128,0,0,0,0
-
- dc.w $f9c0,$08c0,s9a_BMON!xcasBMON ;68020
- dc.b "ca","s"+128,0,0,0,0,0
- dc.w $f9c0,$00c0,s9aBMON!xchk2BMON ;68020
- dc.b "chk","2"+128,0,0,0,0
- dc.w $f9c0,$00c0,s9aBMON!xcmp2BMON ;68020
- dc.b "cmp","2"+128,0,0,0,0
-
- dc.w $f100,$5000,s67BMON!xsize67i9btoeaBMON
- dc.b "add","q"+128,0,0,0,0
- dc.w $f100,$5100,s67BMON!xsize67i9btoeaBMON
- dc.b "sub","q"+128,0,0,0,0
-
- dc.w $f118,$e000,s67BMON!xsize67x9btodx02BMON
- dc.b "as","r"+128,0,0,0,0,0
- dc.w $f118,$e008,s67BMON!xsize67x9btodx02BMON
- dc.b "ls","r"+128,0,0,0,0,0
- dc.w $f118,$e010,s67BMON!xsize67x9btodx02BMON
- dc.b "rox","r"+128,0,0,0,0
- dc.w $f118,$e018,s67BMON!xsize67x9btodx02BMON
- dc.b "ro","r"+128,0,0,0,0,0
- dc.w $f118,$e100,s67BMON!xsize67x9btodx02BMON
- dc.b "as","l"+128,0,0,0,0,0
- dc.w $f118,$e108,s67BMON!xsize67x9btodx02BMON
- dc.b "ls","l"+128,0,0,0,0,0
- dc.w $f118,$e110,s67BMON!xsize67x9btodx02BMON
- dc.b "rox","l"+128,0,0,0,0
- dc.w $f118,$e118,s67BMON!xsize67x9btodx02BMON
- dc.b "ro","l"+128,0,0,0,0,0
-
- dc.w $ff00,$0000,s67BMON!xsize67ixtoeaBMON
- dc.b "or","i"+128,0,0,0,0,0
- dc.w $ff00,$0200,s67BMON!xsize67ixtoeaBMON
- dc.b "and","i"+128,0,0,0,0
- dc.w $ff00,$0400,s67BMON!xsize67ixtoeaBMON
- dc.b "sub","i"+128,0,0,0,0
- dc.w $ff00,$0600,s67BMON!xsize67ixtoeaBMON
- dc.b "add","i"+128,0,0,0,0
- dc.w $ff00,$0a00,s67BMON!xsize67ixtoeaBMON
- dc.b "eor","i"+128,0,0,0,0
- dc.w $ff00,$0c00,s67BMON!xsize67ixtoeaBMON
- dc.b "cmp","i"+128,0,0,0,0
-
- dc.w $f1c0,$0100,stabBMON!xdxtoeaBMON
- dc.b "bts","t"+128,0,0,0,0
- dc.w $f1c0,$0140,stabBMON!xdxtoeaBMON
- dc.b "bch","g"+128,0,0,0,0
- dc.w $f1c0,$0180,stabBMON!xdxtoeaBMON
- dc.b "bcl","r"+128,0,0,0,0
- dc.w $f1c0,$01c0,stabBMON!xdxtoeaBMON
- dc.b "bse","t"+128,0,0,0,0
-
- dc.w $ff00,$0e00,s67BMON!xmovesBMON ;68010
- dc.b "move","s"+128,0,0,0
-
- dc.w $ff00,$4000,s67BMON!xsrceaBMON
- dc.b "neg","x"+128,0,0,0,0
- dc.w $ff00,$4200,s67BMON!xsrceaBMON
- dc.b "cl","r"+128,0,0,0,0,0
- dc.w $ff00,$4400,s67BMON!xsrceaBMON
- dc.b "ne","g"+128,0,0,0,0,0
- dc.w $ff00,$4600,s67BMON!xsrceaBMON
- dc.b "no","t"+128,0,0,0,0,0
- dc.w $ff00,$4a00,s67BMON!xsrceaBMON
- dc.b "ts","t"+128,0,0,0,0,0
-
- dc.w $c000,$0000,snopBMON!ximoveBMON
- dc.b "move","."+128,0,0,0
-
- dc.w $f000,$a000,stabBMON!xdcwopBMON
- dc.b "line-","a"+128,0,0
- dc.w $f000,$f000,stabBMON!xdcwopBMON
- dc.b "line-","f"+128,0,0
- dc.w $0000,$0000,stabBMON!xdcwopBMON
- dc.b "dc.","w"+128,0,0,0,0
-
- ;---------------------------------------------------------------
- xopfailBMON=0 ;dummy
- xnoopsBMON=1
- xdcwopBMON=2
- xeatoccrBMON=3
- xeatosrBMON=4
- xsrtoeaBMON=5
- xwordbxxBMON=6
- xwordccBMON=7
- xshortbxxBMON=8
- xshortccBMON=9
- xeatoaxBMON=10
- xeatodxBMON=11
- xdxtoeaBMON=12
- xiwordtoccrBMON=13
- xiwordtosrBMON=14
- xiwordBMON=15
- xccodewordrelBMON=16
- xinibtoeaBMON=17
- xccodeeaBMON=18
- xsrceaBMON=19
- xsize67eatodxBMON=20
- xsize8eatoax9bBMON=21
- xsize67adsbxBMON=22
- xsize67ixtoeaBMON=23
- xsize67i9btoeaBMON=24
- xsize67x9btodx02BMON=25
- xitrapBMON=26
- xsrcdx02BMON=27
- ximuspBMON=28
- ximoveBMON=29
- ximoveqBMON=30
- xicmpmBMON=31
- xxbcdBMON=32
- xsize6movepBMON=33
- ximovemBMON=34
- xdx9btodx02BMON=35
- xax9btoax02BMON=36
- xdx9btoax02BMON=37
- xiunlkBMON=38
- xilinkBMON=39
- ximovecBMON=40
- xccrtoeaBMON=41
- xmovesBMON=42
- xbfieldBMON=43
- xbfieldtodxBMON=44
- xdxtobfieldBMON=45
- xbkptBMON=46
- xlongbxxBMON=47
- xlongccBMON=48
- xcallmBMON=49
- xcasBMON=50
- xcas2BMON=51
- xchk2BMON=52
- xcmp2BMON=53
- xrx03BMON=54
- xccodeBMON=55
- xccodesizeBMON=56
- xilinklgBMON=57
- xmululBMON=58
- xmulslBMON=59
- xdivullBMON=60
- xdivsllBMON=61
- xpackBMON=62
- xea2todxBMON=63 ;chk.l
- xfccodeBMON=64
- xfccodesizeBMON=65
- xfccodewordrelBMON=66
- xfccodeeaBMON=67
- xfnopBMON=68
- xfmovecrBMON=69
- xpmoveBMON=70
- xpmovefdBMON=71
- xpflushaBMON=72
- xpflushBMON=73
- xploadBMON=74
- xptestBMON=75
- xidbcacBMON=76
- xidbindBMON=77
- xmov16BMON=78
- xpccodeeaBMON=79
- xpccodewordrelBMON=80
- xpccodeBMON=81
- xpccodesizeBMON=82
- xbrapccBMON=83
- xbrafccBMON=84
- xpflushsBMON=85
- xpflushrBMON=86
- xpvalidBMON=87
- xpflush40BMON=88
- xmov162BMON=89
- xlpstopBMON=90
- xtblBMON=91
- xfpuBMON=92
- xfmovelBMON=93
- xfmovemlBMON=94
- xfmovemxBMON=95
-
- endc
-
- ;---------------------------------------------------------------
- assoffsBMON:dc.w aopfailBMON,anoopsBMON,adcwopBMON,aeatoccrBMON,aeatosrBMON,asrtoeaBMON
- dc.w awordbxxBMON,awordccBMON
- dc.w ashortbxxBMON,ashortccBMON,aeatoaxBMON,aeatodxBMON,adxtoeaBMON,aiwordtoccrBMON
- dc.w aiwordtosrBMON,aiwordBMON,accodewordrelBMON,ainibtoeaBMON,accodeeaBMON,asrceaBMON
- dc.w asize67eatodxBMON,asize8eatoax9bBMON,asize67adsbxBMON,asize67ixtoeaBMON
- dc.w asize67i9btoeaBMON,asize67x9btodx02BMON,aitrapBMON,asrcdx02BMON,aimuspBMON
- dc.w aimoveBMON,aimoveqBMON,aicmpmBMON,axbcdBMON,asize6movepBMON
- dc.w aimovemBMON,adx9btodx02BMON,aax9btoax02BMON,adx9btoax02BMON
- dc.w aiunlkBMON,ailinkBMON,aimovecBMON,accrtoeaBMON,aimovesBMON,abfieldBMON,abfieldtodxBMON
- dc.w adxtobfieldBMON,abkptBMON,alongbxxBMON,alongccBMON,aicallmBMON,acasBMON,acas2BMON
- dc.w achk2BMON,acmp2BMON,artmBMON,atpccBMON,atpccsizeBMON,alinklgBMON,amululBMON,amulslBMON
- dc.w adivullBMON,adivsllBMON,apackBMON,aea2todxBMON,atpfccBMON,atpfccsizeBMON
- dc.w afccodewordrelBMON,afccodeeaBMON,afnopBMON,afmovecrBMON,apmoveBMON,apmovefdBMON
- dc.w apflushaBMON,apflushBMON,aploadBMON,aptestBMON,aidbcacBMON,aidbindBMON,amov16BMON
- dc.w apccodeeaBMON,apccodewordrelBMON,atppccBMON,atppccsizeBMON,abrapccBMON,abrafccBMON
- dc.w apflushsBMON,apflushrBMON,apvalidBMON,apflush40BMON,amov162BMON,alpstopBMON
- dc.w atblBMON,afpuBMON,afmovelBMON,afmovemlBMON,afmovemxBMON
-
- ;---------------------------------------------------------------
- assubsBMON:
- aopfailBMON=*-assubsBMON
- anoopsBMON=*-assubsBMON
- rts
- adcwopBMON=*-assubsBMON
- bsr.w atoword_BMON
- move.w d0,op68000
- rts
- aeatoccrBMON=*-assubsBMON
- sf imsizeBMON
- bsr.w asseaBMON
- lea toccrtxtBMON(pc),a0
- bra.w cmptxtBMON
- aeatosrBMON=*-assubsBMON
- move.b #1,imsizeBMON
- bsr.w asseaBMON
- lea tosrtxtBMON(pc),a0
- bra.w cmptxtBMON
-
- accrtoeaBMON=*-assubsBMON
- lea ccrtxtBMON(pc),a0
- bra.b assreaBMON
- asrtoeaBMON=*-assubsBMON
- lea srtxtBMON(pc),a0
- assreaBMON: bsr.w cmptxtBMON
- bra.w asstoeaBMON
-
- abrapccBMON=*-assubsBMON
- bsr.w asspccodeBMON
- bra.b abraf0BMON
- abrafccBMON=*-assubsBMON
- bsr.w assfccodeBMON
- abraf0BMON: or.w d0,op68000
- cmp.b #".",(a3)+
- bne.w failBMON
- cmp.b #"w",(a3)+
- beq.b awdcc0BMON
- bset #6,op68000+1 ;long
- cmp.b #"l",-1(a3)
- beq.b algcc0BMON
- bra.b awdbxx1BMON ;failBMON
- awordccBMON=*-assubsBMON
- bsr.w assccodeBMON
- cmp.b #".",(a3)+
- bne.b awdbxx1BMON ;failBMON
- cmp.b #"w",(a3)+ ;bxx.w
- bne.b awdbxx1BMON ;failBMON
- awdcc0BMON: bsr.w asstabBMON
- awordbxxBMON=*-assubsBMON
- awdrelBMON: bsr.w atolong_BMON
- subq.l #2,d0
- sub.l lginstrBMON,d0 ;fdbx dx,lab...
- sub.l paraBMON,d0
- move.l d0,d1
- ;beq.b awdbxx1BMON ;beq.w *+2
- bpl.b awdbxx0BMON
- not.l d1
- awdbxx0BMON:cmp.l #$7fff,d1
- bhi.b awdbxx1BMON
- bra.w storewordBMON
- awdbxx1BMON:sf d7
- rts
- alongccBMON=*-assubsBMON
- bsr.w assccodeBMON
- cmp.b #".",(a3)+
- bne.b awdbxx1BMON ;failBMON
- cmp.b #"l",(a3)+ ;bxx.l
- bne.b awdbxx1BMON ;failBMON
- algcc0BMON: bsr.w asstabBMON
- alongbxxBMON=*-assubsBMON
- bsr.w atolong_BMON
- subq.l #2,d0
- sub.l paraBMON,d0
- bra.w storelongBMON
-
- ashortccBMON=*-assubsBMON
- bsr.w assccodeBMON
- cmp.b #".",(a3)+
- bne.b ashbxx1BMON ;failBMON
- moveq #"b",d0
- sub.b (a3)+,d0
- beq.b ashort0BMON
- cmp.b #"b"-"s",d0 ;clone
- bne.b ashbxx1BMON ;failBMON
- ashort0BMON:bsr.w asstabBMON
- ashortbxxBMON=*-assubsBMON
- ashbxxBMON: bsr.w atolong_BMON
- subq.l #2,d0
- sub.l paraBMON,d0
- or.b d0,op68000+1
- beq.b ashbxx1BMON
- bpl.b ashbxx0BMON
- not.l d0
- ashbxx0BMON:moveq #$7f,d1
- cmp.l d1,d0
- bls.b ashbxx2BMON
- ashbxx1BMON:sf d7
- ashbxx2BMON:rts
-
- aeatoaxBMON=*-assubsBMON
- bsr.w asseaBMON
- bra.w asstoax9bBMON
-
- aea2todxBMON=*-assubsBMON
- move.b #2,imsizeBMON
- bra.b aea2dxBMON
- aeatodxBMON=*-assubsBMON
- move.b #1,imsizeBMON
- aea2dxBMON:
- asize67eatodxBMON=*-assubsBMON
- bsr.w asseaBMON
- bra.w asstodx9bBMON
-
- adxtoeaBMON=*-assubsBMON
- bsr.w assdx9bBMON
- bra.w asstoeaBMON
-
- aiwordtoccrBMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atobyte_BMON
- bsr.w storewordBMON
- lea toccrtxtBMON(pc),a0
- bra.w cmptxtBMON
- aiwordtosrBMON=*-assubsBMON
- bsr.b aiwrdBMON
- lea tosrtxtBMON(pc),a0
- bra.w cmptxtBMON
- aiwordBMON=*-assubsBMON
- aiwrdBMON: cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atoword_BMON
- bra.w storewordBMON
- alpstopBMON=*-assubsBMON
- move.w #$01c0,d0
- bsr.w storeinstrBMON
- bra.b aiwrdBMON
- atblBMON=*-assubsBMON
- moveq #0,d0 ;unsigned
- moveq #"u",d1
- sub.b (a3)+,d1
- beq.b atbluBMON
- add.b #"s"-"u",d1
- bne.w failBMON
- bset #11,d0 ;signed
- atbluBMON: cmp.b #"n",(a3)
- bne.b atblnBMON
- bset #10,d0 ;round
- addq.w #1,a3
- atblnBMON: cmp.b #".",(a3)+
- bne.w failBMON
- moveq #"b",d1
- sub.b (a3)+,d1
- beq.b atblbBMON
- bset #6,d0
- cmp.b #"b"-"w",d1
- beq.b atblbBMON
- cmp.b #"b"-"l",d1
- bne.w failBMON
- eor.b #%11000000,d0
- atblbBMON: bsr.w storeinstrBMON
- bsr.w asstabBMON
- cmp.b #"d",(a3)+
- bne.b atbleaBMON
- bsr.w assxx02BMON
- cmp.b #":",(a3)+
- bne.w failBMON
- bsr.w assdn02BMON
- or.b d0,op68000+3
- bra.b atbldBMON
- atbleaBMON: subq.w #1,a3
- bsr.w asseaBMON
- bset #0,op68000+2
- atbldBMON: cmp.b #",",(a3)+
- bne.w failBMON
- bsr.w assdn02BMON
- rol.w #4,d0
- or.b d0,op68000+2
- rts
- afpuBMON=*-assubsBMON
- sf d7
- rts
- afmovemxBMON=*-assubsBMON
- moveq #0,d0
- bsr.w storeinstrBMON
- cmp.b #"d",(a3)
- beq.b afmvmx0BMON ;dynamic mask
- cmp.b #"f",(a3)
- beq.b afmvmx0BMON
- bsr asseaBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bra assfprxBMON
- afmvmx0BMON:bset #13-8,op68000+2
- bsr assfprxBMON
- bsr asstoeaBMON
- moveq #%111000,d0
- and.w op68000,d0
- beq.w failBMON ;dn
- cmp.b #%001000,d0 ;an
- beq.w failBMON
- cmp.b #%111100,d0 ;#
- beq.w failBMON
- cmp.b #%100000,d0 ;-(an)?
- bne.b afmvmx1BMON
- move.b op68000+3,d1 ;rl
- moveq #8-1,d0
- afmvmx2BMON:lsr.b #1,d1
- roxl.b #1,d2
- dbf d0,afmvmx2BMON
- move.b d2,op68000+3
- bclr #12-8,op68000+2 ;predec mode
- afmvmx1BMON:rts
-
-
- afmovemlBMON=*-assubsBMON
- st d5
- bra.b afmovemBMON
- afmovelBMON=*-assubsBMON
- sf d5 ;fmovem flag
- afmovemBMON:moveq #0,d4 ;fpcr counter
- move.w #$8000,d0
- bsr.w storeinstrBMON
- move.b #%010,imsizeBMON ;long
- pea fpiar0BMON(pc) ;fpiar,An check
- cmp.b #"f",(a3)
- bne.b afpcr1BMON
- bset #13-8,op68000+2
- bsr.b afpcrBMON
- bra asstoeaBMON
- afpcr1BMON: bsr asseaBMON
- cmp.b #",",(a3)+
- bne.b fpfailBMON
- afpcrBMON: cmp.b #"f",(a3)+
- bne.b fpfailBMON
- cmp.b #"p",(a3)+
- bne.b fpfailBMON
- moveq #12,d2
- cmp.b #"c",(a3)
- beq.b afpcr0BMON
- moveq #11,d2
- cmp.b #"s",(a3)
- beq.b afpcr0BMON
- moveq #10,d2
- cmp.b #"i",(a3)+
- bne.b fpfailBMON
- cmp.b #"a",(a3)
- bne.b fpfailBMON
- afpcr0BMON: addq.w #1,a3
- cmp.b #"r",(a3)+
- bne.b fpfailBMON
- bset d2,op68000+2
- addq.b #1,d4 ;fpcr counter
- cmp.b #"/",(a3)
- bne.b afpcr2BMON
- tst.b d5 ;fmovem flag
- beq.b fpfailBMON
- addq.w #1,a3
- bra.b afpcrBMON
- afpcr2BMON: rts
- fpiar0BMON: moveq #%111000,d0
- and.b op68000+1,d0 ;ea field
- bne.b fpiar1BMON ;Dn?
- cmp.b #1,d4 ;1 fpcr?
- bne.b fpfailBMON
- fpiar1BMON: subq.b #%001000,d0 ;An
- bne.b fpcrokBMON
- cmp.b #1,d4 ;1 fpcr?
- bne.b fpfailBMON
- btst #10-8,op68000+2 ;fpiar?
- bne.b fpcrokBMON
- fpfailBMON: sf d7
- fpcrokBMON: rts
-
- afmovecrBMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atobyte_BMON
- beq.b amfk0BMON
- cmp.b #$3f,d0
- bhi.w failBMON
- cmp.b #$0b,d0
- bcs.w failBMON
- cmp.b #$0f,d0
- bls.b amfk0BMON
- cmp.b #$30,d0
- bcs.w failBMON
- amfk0BMON: or.w #$5c00,d0
- bsr.w storewordBMON
- bra.w asstofpx79BMON
-
- assfprxBMON:move.w #$d000,d0 ;postincr/cntrl mode
- cmp.b #"d",(a3) ;dynamic mask?
- bne.b arxmvm2BMON
- addq.w #1,a3
- move.b (a3)+,d0
- sub.b #"0",d0
- bcs.w arxfailBMON
- cmp.b #7,d0
- bhi.w arxfailBMON
- lsl.b #4,d0
- bset #11,d0 ;dynamic
- bra.b arxmvm1BMON
- arxmvm2BMON:cmp.b #"f",(a3)+
- bne.b arxfailBMON
- cmp.b #"p",(a3)+
- bne.b arxfailBMON
- move.b (a3)+,d1
- sub.b #"0",d1
- bcs.b arxfailBMON
- cmp.b #7,d1
- bhi.b arxfailBMON
- moveq #7,d3
- sub.b d1,d3
- bset d3,d0
- arxmvm4BMON:cmp.b #",",(a3)
- beq.b arxmvm1BMON
- cmp.b #"/",(a3)+
- beq.b arxmvm2BMON
- cmp.b #"-",-1(a3)
- bne.b arxmvm1BMON
- cmp.b #"f",(a3)+
- bne.b arxfailBMON
- cmp.b #"p",(a3)+
- bne.b arxfailBMON
- move.b (a3)+,d2
- sub.b #"0",d2
- bcs.b arxfailBMON
- cmp.b #7,d2
- bhi.b arxfailBMON
- cmp.b d1,d2
- bls.b arxfailBMON
- arxmvm3BMON:addq.b #1,d1
- moveq #7,d3
- sub.b d1,d3
- bset d3,d0
- cmp.b d1,d2
- bne.b arxmvm3BMON
- bra.b arxmvm4BMON
- arxmvm1BMON:or.w d0,op68000+2
- rts
- arxfailBMON:bra failBMON
-
- apccodewordrelBMON=*-assubsBMON
- bsr.w asspccodeBMON
- bra.b accode1BMON
- afccodewordrelBMON=*-assubsBMON
- bsr.w assfccodeBMON
- accode1BMON:bsr.w storeinstrBMON ;instrBMON
- bra.b accode0BMON ;4bytes instrlen ok (oma bug)
- accodewordrelBMON=*-assubsBMON
- bsr.w assccodeBMON
- accode0BMON:bsr.w asstabBMON
- bsr.w assdx02BMON
- cmp.b #",",(a3)+
- beq.w awdrelBMON
- sf d7
- rts
- ainibtoeaBMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atodnibBMON
- cmp.b #31,d0
- bhi.w failBMON
- bsr.w storeinstrBMON
- bra.w asstoeaBMON
-
- apccodeeaBMON=*-assubsBMON
- bsr.w asspccodeBMON
- bra.b asrc1BMON
- afccodeeaBMON=*-assubsBMON
- bsr.w assfccodeBMON
- asrc1BMON: bsr.w storeinstrBMON
- bra.b asrc0BMON
- accodeeaBMON=*-assubsBMON
- bsr.w assccodeBMON
- asrc0BMON: bsr.w asstabBMON
- asrceaBMON=*-assubsBMON
- bra.w asseaBMON
-
- aimovesBMON=*-assubsBMON
- bsr.w storeinstrBMON ;space
- moveq #0,d3
- cmp.b #",",2(a3) ;xx,<ea>
- bne.b actlmvsBMON
- bset #11,d3
- bsr.w amvcregBMON
- addq.w #1,a3
- bsr.w asseaBMON
- bra.b aimvs0BMON
- actlmvsBMON:bsr.w asseaBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bsr.w amvcregBMON
- aimvs0BMON: move.w d3,op68000+2
- rts
-
- asize8eatoax9bBMON=*-assubsBMON
- bsr.w asseaBMON
- bra.w asstoax9bBMON
-
- asize67ixtoeaBMON=*-assubsBMON
- cmp.b #"#",(a3)
- bne.w failBMON
- bsr.w asseaBMON ;#$xx.x
- bra.w asstoeaBMON ;clr previous ea !
-
- asize67i9btoeaBMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atobyteBMON
- beq.w failBMON
- cmp.b #8,d0
- bhi.w failBMON
- bne.b ai9b0BMON
- sf d0
- ai9b0BMON: add.b d0,d0
- or.b d0,op68000
- bra.w asstoeaBMON
-
- asize67x9btodx02BMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.b ashft0BMON
- bsr.w atobyteBMON
- beq.w failBMON
- cmp.b #8,d0
- bhi.w failBMON
- bne.b ashft1BMON
- sf d0
- ashft1BMON: add.b d0,d0
- or.b d0,op68000
- bra.w asstodx02BMON
- ashft0BMON: bset #5,op68000+1
- subq.w #1,a3
- bsr.w assdx9bBMON
- bra.w asstodx02BMON
-
- aitrapBMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atodnibBMON
- cmp.b #15,d0
- bhi.w failBMON
- or.b d0,op68000+1
- rts
- asrcdx02BMON=*-assubsBMON
- bra.w assdx02BMON
- aimuspBMON=*-assubsBMON
- lea usptxtBMON(pc),a0
- cmp.b #"a",(a3)
- beq.b aimusp0BMON
- bset #3,op68000+1
- bsr.b aimusp1BMON
- cmp.b #",",(a3)+
- bra.w assax02BMON
- aimusp0BMON:bsr.w assax02BMON
- cmp.b #",",(a3)+
- bne.w failBMON
- aimusp1BMON:bra.w cmptxtBMON
-
- apmovefdBMON=*-assubsBMON ;68030mmu only
- move.w #$0100,d0
- bsr.b apmvfdBMON
- move.w op68000+2,d0
- cmp.w #$4100,d0 ;40:tc
- beq.w apfdokBMON
- eor.w #%0000100100000000,d0 ;08:tt0,0c:tt1,48:srp,4c:crp
- and.w #%1011101111111111,d0
- bne.w failBMON
- apfdokBMON: rts
- apmoveBMON=*-assubsBMON
- bsr.b apregBMON
- move.l a1,a3 ;restore ptr
- tas d7 ;failBMON?, ignore failBMON
- beq.b afromeaBMON
- apmv2eaBMON:move.w #$200,d0
- bsr.w storeinstrBMON
- bsr.b apregBMON
- bra.w asstoeaBMON
- afromeaBMON:moveq #0,d0
- apmvfdBMON: bsr.w storeinstrBMON
- bsr.w asseaBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- apregBMON: lea pregsBMON(pc),a0
- move.l a3,a1
- aprglpBMON: move.b (a0)+,d1
- beq.w failBMON
- aprgcmpBMON:moveq #$7f,d0
- and.b (a0),d0
- cmp.b (a3)+,d0
- bne.b aprgskpBMON
- tst.b (a0)+
- bpl.b aprgcmpBMON
- bra.b aprokBMON
- aprgskpBMON:tst.b (a0)+
- bpl.b aprgskpBMON
- move.l a1,a3
- bra.b aprglpBMON
- aprokBMON: or.b d1,op68000+2
- rts
- aidbcacBMON=*-assubsBMON
- aidb3BMON: move.b (a3)+,d1
- cmp.b #"c",(a3)+
- bne.b aidb2BMON
- moveq #4-1,d0
- lea idctxBMON(pc),a0
- aidb1BMON: cmp.b (a0,d0.w),d1
- beq.b aidb0BMON
- dbf d0,aidb1BMON
- aidb2BMON: bra.w failBMON
- aidb0BMON: lsl.w #6,d0
- or.w d0,op68000
- rts
- aidbindBMON=*-assubsBMON
- bsr.b aidb3BMON
- cmp.b #",",(a3)+
- bne.w failBMON
- apflush40BMON=*-assubsBMON
- cmp.b #"(",(a3)+
- bne.w failBMON
- bsr.w assax02BMON
- cmp.b #")",(a3)+
- bne.w failBMON
- rts
-
- aimovecBMON=*-assubsBMON
- moveq #0,d3
- cmp.b #"t",(a3) ;movec tc, (68040)
- beq.b actlmvcBMON
- cmp.b #",",2(a3) ;xx,xxx(x)
- bne.b actlmvcBMON
- bset #0,op68000+1
- bsr.b amvcregBMON
- addq.w #1,a3 ;cmp.b #",",(a3)+ bne.w failBMON
- bsr.b actrlmvBMON
- bra.b aimvc0BMON
- actlmvcBMON:bsr.b actrlmvBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bsr.b amvcregBMON
- aimvc0BMON: move.w d3,d0
- bra.w storewordBMON
- actrlmvBMON:lea cregsBMON-6(pc),a2
- actrl1BMON: addq.w #6,a2
- tst.b (a2)
- bmi.w actrl4BMON
- moveq #0,d1
- actrl2BMON: move.b 2(a2,d1.w),d0
- beq.b actrl0BMON
- cmp.b (a3,d1.w),d0
- bne.b actrl1BMON
- addq.b #1,d1
- cmp.b #4,d1
- bne.b actrl2BMON
- actrl0BMON: or.w (a2),d3
- add.w d1,a3
- rts
- actrl4BMON: sf d7 ;failBMON
- rts
- amvcregBMON:move.b (a3)+,d0
- cmp.b #"d",d0
- beq.b mvcdxBMON
- bset #15,d3 ;ax
- cmp.b #"a",d0
- bne.w actrl4BMON
- mvcdxBMON: bsr.w assrn02BMON
- ror.w #4,d0
- or.w d0,d3 ;ax/dx
- rts
-
- abfieldtodxBMON=*-assubsBMON
- bsr.b abfi3BMON
- cmp.b #",",(a3)+
- bne.w failBMON
- cmp.b #"d",(a3)+
- bne.w failBMON
- moveq #0,d3
- bsr.b mvcdxBMON
- or.w d3,op68000+2
- rts
- adxtobfieldBMON=*-assubsBMON
- cmp.b #"d",(a3)+
- bne.w failBMON
- moveq #0,d3
- bsr.b mvcdxBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bsr.b abfi3BMON
- or.w d3,op68000+2
- rts
- abfieldBMON=*-assubsBMON
- abfi3BMON: bsr.w storeinstrBMON
- bsr.w asseaBMON
- cmp.b #"{",(a3)+
- bne.w failBMON
- bsr.b abfi2BMON
- and.w #%111111,d0
- lsl.w #6,d0
- move.w d0,d2
- cmp.b #":",(a3)+
- bne.w failBMON
- bsr.b abfi2BMON
- and.w #%111111,d0
- or.w d2,d0
- cmp.b #"}",(a3)+
- bne.w failBMON
- move.w d0,op68000+2
- rts
- abfi2BMON: cmp.b #"d",(a3)
- beq.b abfi1BMON
- bsr.w atodnibBMON
- beq.w failBMON
- cmp.b #32,d0
- bhi.w failBMON
- bclr #5,d0 ;bitfield32=0
- rts
- abfi1BMON: addq.w #1,a3
- move.b (a3)+,d0
- sub.b #"0",d0
- bcs.w failBMON
- cmp.b #7,d0
- bhi.w failBMON
- bset #5,d0
- rts
- abkptBMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bra.w assxx02BMON
- apackBMON=*-assubsBMON
- cmp.b #"-",(a3)
- bne.b apadxBMON
- addq.w #1,a3
- cmp.b #"(",(a3)+
- bne.w failBMON
- bsr.w assax02BMON
- lea xbcdtxtBMON(pc),a0
- bsr.w cmptxtBMON
- bsr.w assax9bBMON
- cmp.b #")",(a3)+
- bne.w failBMON
- bset #3,op68000+1
- bra.b apad0BMON
- apadxBMON: bsr.w assdx02BMON
- bsr.w asstodx9bBMON
- apad0BMON: cmp.b #",",(a3)+
- bne.w failBMON
- bra.w aiwrdBMON
- amov16BMON=*-assubsBMON
- cmp.b #"(",(a3)+
- bne.w failBMON
- bsr.w assax02BMON
- lea cmpmtxtBMON(pc),a0
- bsr.w cmptxtBMON
- bsr.w assan02BMON
- ror.w #4,d0
- or.w #$8000,d0
- bra.w storeinstrBMON
- amov162BMON=*-assubsBMON
- cmp.b #"a",1(a3) ;(ax)
- bne.b amov0BMON
- cmp.b #"(",(a3)+
- bne.w failBMON
- bsr.w assax02BMON
- cmp.b #")",(a3)+
- bne.w failBMON
- moveq #%000000,d1
- cmp.b #"+",(a3)+
- beq.b amov1BMON
- subq.w #1,a3
- moveq #%010000,d1
- amov1BMON: cmp.b #",",(a3)+
- bne.w failBMON
- or.b d1,op68000+1
- amov2BMON: move.w op68000,-(a7)
- bsr.w asseaBMON
- moveq #%111111,d0
- and.w op68000,d0
- move.w (a7)+,op68000
- cmp.w #%111001,d0
- bne.w failBMON
- rts
- amov0BMON: bsr.b amov2BMON
- cmp.b #",",(a3)+
- bne.w failBMON
- cmp.b #"(",(a3)+
- bne.w failBMON
- bsr.w assax02BMON
- cmp.b #")",(a3)+
- bne.w failBMON
- moveq #%001000,d1
- cmp.b #"+",(a3)+
- beq.b amov3BMON
- moveq #%011000,d1
- amov3BMON: or.b d1,op68000+1
- rts
-
- aimoveBMON=*-assubsBMON
- moveq #%01,d0
- sf imsizeBMON
- cmp.b #"b",(a3)
- beq.b aimov0BMON
- moveq #%11,d0
- addq.b #1,imsizeBMON
- cmp.b #"w",(a3)
- beq.b aimov0BMON
- moveq #%10,d0
- addq.b #1,imsizeBMON
- cmp.b #"l",(a3)
- bne.w failBMON
- aimov0BMON: lsl.b #4,d0
- or.b d0,op68000
- addq.w #1,a3
- bsr.w asstabBMON
- bsr.w asseaBMON
- move.w op68000,-(a7)
- bsr.w asstoeaBMON
- move.w op68000,d1
- move.w (a7)+,op68000
- move.w d1,d0
- and.w #%111,d0
- ror.w #7,d0
- or.w d0,op68000
- and.w #%111000,d1
- lsl.w #3,d1
- or.w d1,op68000
- rts
- aimoveqBMON=*-assubsBMON
- sf imsizeBMON
- bsr.w asseaBMON
- move.w op68000,d0
- clr.l oplen
- and.w #%111111,d0 ;#x
- cmp.w #%111100,d0
- bne.w failBMON
- move.b op68000+3,op68000+1
- bra.w asstodx9bBMON
- aicallmBMON=*-assubsBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atobyte_BMON ;d0.l
- bsr.w storeinstrBMON
- bra.w asstoeaBMON
-
- acasBMON=*-assubsBMON
- bsr.b assdn02BMON
- move.w d0,d2
- cmp.b #",",(a3)+
- bne.w failBMON
- bsr.b assdn02BMON
- lsl.w #6,d0
- or.w d2,d0
- bsr.w storeinstrBMON
- bra.w asstoeaBMON
-
- assan02BMON:cmp.b #"a",(a3)+
- bne.w failBMON
- bra.b assrn02BMON
- assdn02BMON:cmp.b #"d",(a3)+
- bne.w failBMON
- assrn02BMON:move.b (a3)+,d0
- sub.b #"0",d0
- bcs.w failBMON
- cmp.b #7,d0
- bhi.w failBMON
- ext.w d0
- rts
- acas2BMON=*-assubsBMON
- cmp.b #"w",(a3)
- beq.b aca0BMON
- cmp.b #"l",(a3)
- bne.w failBMON
- bset #9-8,op68000
- aca0BMON: addq.w #1,a3
- bsr.w asstabBMON
- bsr.b assdn02BMON
- swap d0
- cmp.b #":",(a3)+
- bne.b cas2flBMON
- bsr.b assdn02BMON
- move.l d0,d1
- cmp.b #",",(a3)+
- bne.b cas2flBMON
- bsr.b assdn02BMON
- swap d0
- cmp.b #":",(a3)+
- bne.b cas2flBMON
- bsr.b assdn02BMON
- lsl.l #6,d0
- or.l d0,d1
- cmp.b #",",(a3)+
- bne.b cas2flBMON
- cmp.b #"(",(a3)+
- bne.b cas2flBMON
- moveq #0,d3
- bsr.w amvcregBMON
- cmp.b #")",(a3)+
- bne.b cas2flBMON
- cmp.b #":",(a3)+
- bne.b cas2flBMON
- cmp.b #"(",(a3)+
- bne.b cas2flBMON
- swap d3
- bsr.w amvcregBMON
- cmp.b #")",(a3)+
- bne.b cas2flBMON
- or.l d1,d3
- move.l d3,d0
- bra.w storelongBMON
- cas2flBMON: sf d7
- rts
- achk2BMON=*-assubsBMON
- move.w #$0800,d3
- bra.b achkcmpBMON
- acmp2BMON=*-assubsBMON
- moveq #0,d3
- achkcmpBMON:bsr.w storeinstrBMON
- bsr.w asseaBMON
- cmp.b #",",(a3)+
- bne.b cas2flBMON
- bsr.w amvcregBMON ;or.w ?,d3
- move.w d3,op68000+2
- rts
-
- artmBMON=*-assubsBMON
- moveq #0,d3
- bsr.w amvcregBMON
- rol.w #4,d3
- or.w d3,op68000 ;0000ynnn
- rts
-
- atppccsizeBMON=*-assubsBMON
- bsr.w asspccodeBMON
- bra.b atpc2BMON
- atpfccsizeBMON=*-assubsBMON
- bsr.w assfccodeBMON
- atpc2BMON: bsr.w storeinstrBMON
- bra.b atpc1BMON
- atpccsizeBMON=*-assubsBMON
- bsr.w assccodeBMON
- atpc1BMON: cmp.b #".",(a3)+
- bne.w failBMON
- move.b (a3)+,d0
- bsr.w asstabBMON
- cmp.b #"w",d0
- beq.w aiwrdBMON
- cmp.b #"l",d0
- bne.w failBMON
- bset #0,op68000+1
- atpc0BMON: cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w atolong_BMON
- bra.w storelongBMON
- atpccBMON=*-assubsBMON
- bsr.w assccodeBMON
- cmp.b #" ",(a3)+
- bne.w failBMON
- rts
-
- apvalidBMON=*-assubsBMON
- bsr.w assan02BMON
- or.w #$2c00,d0
- bsr.b afstoreBMON
- bra.w asstoeaBMON
- atppccBMON=*-assubsBMON
- bsr.w asspccodeBMON
- bra.b afst0BMON
- atpfccBMON=*-assubsBMON
- bsr.w assfccodeBMON
- afst0BMON: cmp.b #" ",(a3)+
- bne.w failBMON
- afstoreBMON:bra.w storeinstrBMON
-
- afnopBMON=*-assubsBMON
- moveq #0,d0 ;4byte command
- bra.b afstoreBMON
- apflushaBMON=*-assubsBMON
- move.w #$2400,d0
- bra.b afstoreBMON
- apflushrBMON=*-assubsBMON
- move.w #$a000,d0
- bsr.b afstoreBMON
- bra.w asseaBMON
- apflushsBMON=*-assubsBMON
- move.w #$3400,d3
- bra.b apfl3BMON
- apflushBMON=*-assubsBMON
- move.w #$3000,d3
- apfl3BMON: move.b (a3)+,d2
- cmp.b #"f",(a3)
- bne.b apfl1BMON
- addq.w #1,a3
- cmp.b #"c",(a3)+
- bne.w failBMON
- moveq #%00000000,d1
- cmp.b #"s",d2
- beq.b apfl2BMON
- moveq #%00000001,d1
- cmp.b #"d",d2
- beq.b apfl2BMON
- bra.w failBMON
- apfl1BMON: moveq #%00010000,d1
- moveq #"#",d0
- sub.b d2,d0
- beq.b apfl0BMON
- cmp.b #"#"-"d",d0
- bne.w failBMON
- moveq #%00001000,d1
- apfl0BMON: bsr.w assrn02BMON
- or.w d0,d1
- apfl2BMON: cmp.b #",",(a3)+
- bne.w failBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w assrn02BMON
- lsl.w #5,d0
- or.w d1,d0
- or.w d3,d0 ;$3000|$3400
- bra.b afstoreBMON
- aploadBMON=*-assubsBMON
- move.w #$2010,d1
- apte0BMON: moveq #"w",d0
- sub.b (a3)+,d0
- beq.b aplo0BMON
- bset #9,d1
- subq.b #"w"-"r",d0
- bne.w failBMON
- aplo0BMON: bsr.w asstabBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w assrn02BMON
- or.w d1,d0
- bsr.w afstoreBMON
- bra.w asstoeaBMON
- aptestBMON=*-assubsBMON
- move.w #$8110,d1
- bsr.b apte0BMON
- cmp.b #",",(a3)+
- bne.w failBMON
- cmp.b #"#",(a3)+
- bne.w failBMON
- bsr.w assrn02BMON
- ror.w #6,d0
- beq.w failBMON ;level 0?
- move.w d0,d1
- cmp.b #",",(a3)+
- bne.w failBMON
- cmp.b #"a",(a3)+
- bne.w failBMON
- bsr.w assrn02BMON
- rol.w #5,d0
- or.w d1,d0
- or.w d0,op68000+2
- rts
-
- adivsllBMON=*-assubsBMON
- move.w #$800,d0
- bra.b adivs0BMON
- adivullBMON=*-assubsBMON
- moveq #0,d0
- adivs0BMON: bsr.w storeinstrBMON
- move.b #%10,imsizeBMON
- bsr.w asseaBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bsr.w assdn02BMON ;d0.w
- move.w d0,d3
- cmp.b #":",(a3)+
- bne.w failBMON
- bsr.w assdn02BMON
- cmp.b d0,d3
- beq.w failBMON
- bra.b notwoBMON
- amulslBMON=*-assubsBMON
- move.w #$800,d0
- bra.b amuls0BMON
- amululBMON=*-assubsBMON
- moveq #0,d0
- amuls0BMON: bsr.w storeinstrBMON
- move.b #%10,imsizeBMON
- bsr.w asseaBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bsr.w assdn02BMON ;d0.w
- move.w d0,d3
- cmp.b #":",(a3)+
- bne.b notwoBMON
- bset #10,d3
- bsr.w assdn02BMON
- notwoBMON: ror.w #4,d0 ;mulx.l ea,dm:dm=dn
- or.w d0,d3
- or.w d3,op68000+2
- rts
-
- aicmpmBMON=*-assubsBMON
- cmp.b #"(",(a3)+
- bne.w failBMON
- bsr.w assax02BMON
- lea cmpmtxtBMON(pc),a0
- bsr.w cmptxtBMON
- bsr.w assax9bBMON
- cmp.b #")",(a3)+
- bne.w failBMON
- cmp.b #"+",(a3)+
- bne.w failBMON
- rts
-
- asize67adsbxBMON=*-assubsBMON ;same!
- axbcdBMON=*-assubsBMON
- aasxbcdBMON:cmp.b #"-",(a3)+
- bne.b axbcd0BMON
- bset #3,op68000+1
- cmp.b #"(",(a3)+
- bne.b axbcd2BMON ;failBMON
- bsr.w assax02BMON
- lea xbcdtxtBMON(pc),a0
- bsr.w cmptxtBMON
- bsr.w assax9bBMON
- cmp.b #")",(a3)+
- beq.b axbcd1BMON ;no failBMON
- axbcd2BMON: sf d7
- axbcd1BMON: rts
- axbcd0BMON: subq.w #1,a3
- bsr.w assdx02BMON
- bra.w asstodx9bBMON
-
- asize6movepBMON=*-assubsBMON
- cmp.b #"d",(a3)
- beq.b amovp0BMON
- bsr.w asseaBMON
- move.w op68000,d0
- bclr #5,op68000+1
- and.w #%111000,d0
- cmp.w #%101000,d0
- bne.w failBMON
- bra.w asstodx9bBMON
- amovp0BMON: bset #7,op68000+1
- bsr.w assdx9bBMON
- bsr.w asstoeaBMON
- move.w op68000,d0
- bclr #5,op68000+1
- and.w #%111000,d0
- cmp.w #%101000,d0
- bne.w failBMON
- rts
- aimovemBMON=*-assubsBMON
- moveq #0,d0
- bsr storeinstrBMON
- cmp.b #"d",(a3)
- beq.b aimovm0BMON
- cmp.b #"a",(a3)
- beq.b aimovm0BMON
- bset #10-8,op68000
- bsr.w asseaBMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bsr.b assrxBMON
- bra.b aimovm7BMON
- aimovm0BMON:bsr.b assrxBMON
- bsr.w asstoeaBMON
- aimovm7BMON:moveq #%111000,d0
- and.w op68000,d0
- cmp.w #%100000,d0 ;-(an)
- bne.b aimovm8BMON
- move.w op68000+2,d1 ;rl
- moveq #16-1,d0
- aimovm9BMON:lsr.w #1,d1
- roxl.w #1,d2
- dbf d0,aimovm9BMON
- move.w d2,op68000+2
- aimovm8BMON:rts
- assrxBMON: clr.w d0
- aimovm2BMON:move.b 1(a3),d1
- sub.b #"0",d1
- bcs.w failBMON
- cmp.b #7,d1
- bhi.w failBMON
- cmp.b #"d",(a3)
- beq.b aimovm5BMON
- cmp.b #"a",(a3)
- bne.w failBMON
- addq.b #8,d1
- aimovm5BMON:addq.w #2,a3
- bset d1,d0
- aimovm4BMON:cmp.b #",",(a3)
- beq.b aimovm1BMON
- cmp.b #"/",(a3)+
- beq.b aimovm2BMON
- cmp.b #"-",-1(a3)
- bne.b aimovm1BMON
- move.b 1(a3),d2
- sub.b #"0",d2
- bcs.w failBMON
- cmp.b #7,d2
- bhi.w failBMON
- cmp.b #"d",(a3)
- beq.b aimovm6BMON
- cmp.b #"a",(a3)
- bne.w failBMON
- addq.b #8,d2
- aimovm6BMON:addq.w #2,a3
- cmp.b d1,d2
- bls.w failBMON
- aimovm3BMON:addq.b #1,d1
- bset d1,d0
- cmp.b d1,d2
- bne.b aimovm3BMON
- bra.b aimovm4BMON
- aimovm1BMON:move.w d0,op68000+2
- rts
-
- adx9btodx02BMON=*-assubsBMON
- bsr.b assdx9bBMON
- bra.w asstodx02BMON
- aax9btoax02BMON=*-assubsBMON
- bsr.b assax9bBMON
- bra.b asstoax02BMON
- adx9btoax02BMON=*-assubsBMON
- bsr.b assdx9bBMON
- bra.b asstoax02BMON
- aiunlkBMON=*-assubsBMON
- bra.b assax02BMON
- alinklgBMON=*-assubsBMON
- bsr.b assax02BMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bra.w atpc0BMON
- ailinkBMON=*-assubsBMON
- bsr.b assax02BMON
- cmp.b #",",(a3)+
- bne.w failBMON
- bra.w aiwrdBMON
-
- asstoax9bBMON:cmp.b #",",(a3)+
- bne.w failBMON
- assax9bBMON:cmp.b #"a",(a3)+
- beq.b assxx9bBMON
- bra.w failBMON
- asstodx9bBMON:cmp.b #",",(a3)+
- bne.w failBMON
- assdx9bBMON:cmp.b #"d",(a3)+
- bne.w failBMON
- assxx9bBMON:move.b (a3)+,d0
- sub.b #"0",d0
- bcs.w failBMON
- cmp.b #7,d0
- bhi.w failBMON
- lsl.w #8,d0
- add.w d0,d0 ;asl.w #1,d0
- or.w d0,op68000
- rts
- asstoax02BMON:cmp.b #",",(a3)+
- bne.w failBMON
- assax02BMON:cmp.b #"a",(a3)+
- bne.w failBMON
- bra.b assxx02BMON
- asstodx02BMON:cmp.b #",",(a3)+
- bne.w failBMON
- assdx02BMON:cmp.b #"d",(a3)+
- bne.w failBMON
- assxx02BMON:move.b (a3)+,d0
- sub.b #"0",d0
- bcs.w failBMON
- cmp.b #7,d0
- bhi.w failBMON
- or.b d0,op68000+1
- rts
-
- ifnd failBMON
- failBMON: sf d7
- rts
- endc
-
- asstofpx79BMON:
- cmp.b #",",(a3)+
- bne.w failBMON
- assfpx79BMON:cmp.b #"f",(a3)+
- bne.w failBMON
- cmp.b #"p",(a3)+
- bne.w failBMON
- move.b (a3)+,d0
- sub.b #"0",d0
- bcs.w failBMON
- cmp.b #7,d0
- bhi.w failBMON
- ext.w d0
- lsl.w #7,d0
- or.w d0,op68000+2 ;fpu instrBMON!
- rts
- assccodeBMON:clr.w d0
- lea ccodetxtBMON(pc),a0
- asscc0BMON: move.b (a3),d1
- lsl.w #8,d1
- move.b 1(a3),d1
- tst.b 1(a0) ;"t",0;"f",0
- bne.b asscc2BMON
- sf d1
- asscc2BMON: cmp.w (a0)+,d1
- beq.b asscc1BMON
- add.w #$0100,d0
- cmp.w #$1000,d0
- bne.b asscc0BMON
- bra.w failBMON
- asscc1BMON: addq.w #1,a3
- tst.b d1 ;"t",0;"f",0
- beq.b asscc3BMON
- addq.w #1,a3
- asscc3BMON: or.w d0,op68000
- rts
-
- assfccodeBMON:
- moveq #124,d0 ;(31-1)*4
- assfcc2BMON:lea fccodetxtBMON(pc),a0
- lea (a0,d0.w),a0
- move.l a3,-(a7)
- moveq #4-1,d1
- assfcc0BMON:cmpm.b (a3)+,(a0)+
- bne.b assfcc1BMON
- tst.b (a0)
- dbeq d1,assfcc0BMON
- cmp.b #"e",(a3) ;ngle preference
- beq.b assfcc1BMON
- addq.w #4,a7 ;remove a3
- lsr.w #2,d0
- rts
- assfcc1BMON:move.l (a7)+,a3
- subq.w #4,d0
- bpl.b assfcc2BMON
- bra.w failBMON
-
- asspccodeBMON:
- move.b (a3)+,d1
- lsl.w #8,d1
- move.b (a3)+,d1
- lea pccodetxtBMON(pc),a0
- moveq #30,d0 ;(16-1)*2
- asspcc0BMON:cmp.w (a0,d0.w),d1
- beq.b asspcc1BMON
- subq.w #2,d0
- bpl.b asspcc0BMON
- bra.w failBMON
- asspcc1BMON:lsr.w #1,d0
- rts
-
- cmpt0BMON: cmp.b (a3)+,d0
- bne.w failBMON
- cmptxtBMON: move.b (a0)+,d0
- bclr #7,d0
- beq.b cmpt0BMON
- cmp.b (a3)+,d0
- bne.w failBMON
- rts
-
- storeinstrBMON:addq.l #2,lginstrBMON
- storewordBMON:
- lea op68000-2,a0
- move.w (a0),d1 ;oplen!
- addq.w #1,(a0)+
- add.w d1,d1
- move.w d0,2(a0,d1.w)
- rts
- storelongBMON:
- lea op68000-2,a0
- move.w (a0),d1 ;oplen!
- addq.w #2,(a0)+
- add.w d1,d1
- move.l d0,2(a0,d1.w)
- rts
-
- asstabBMON: cmp.l lineendBMON,a3
- bhi.w failBMON
- cmp.b #" ",(a3)+
- beq.b asstabBMON
- asstab0BMON:subq.w #1,a3
- rts
-
- asstoeaBMON:cmp.b #",",(a3)+
- bne.w failBMON
- asseaBMON: and.w #$ffc0,op68000
- cmp.b #"d",(a3) ;dx
- beq.w assdx02BMON
- or.w #$0008,op68000
- cmp.b #"a",(a3) ;ax
- beq.w assax02BMON
- and.w #$ffc0,op68000
- cmp.b #"(",(a3) ;(ax)|(ax)+
- bne.b assea0BMON
- cmp.b #"a",1(a3)
- bne.b assea0BMON
- addq.w #1,a3
- or.w #$0010,op68000
- bsr.w assax02BMON
- cmp.b #")",(a3)+
- bne.w failBMON
- cmp.b #"+",(a3)
- bne.b assea1BMON
- addq.w #1,a3
- or.w #$0018,op68000
- assea1BMON: rts
- assea0BMON: cmp.b #"-",(a3) ;-(ax)
- bne.b assea2BMON
- cmp.b #"(",1(a3)
- bne.w failBMON
- addq.w #2,a3
- or.w #$0020,op68000
- bsr.w assax02BMON
- cmp.b #")",(a3)+
- bne.w failBMON
- rts
- assea2BMON: cmp.b #"#",(a3)
- bne.w assea3BMON
- addq.w #1,a3
- or.w #$003c,op68000
- cmp.b #34,(a3)
- bne.b assea16BMON
- addq.w #1,a3
- moveq #0,d0
- moveq #5-1,d1
- assea18BMON:cmp.b #34,(a3)+
- beq.b assea17BMON
- lsl.l #8,d0
- move.b -1(a3),d0
- dbf d1,assea18BMON
- bra.w failBMON
- assea16BMON:cmp.b #"$",(a3)
- beq.b assea22BMON
- bsr.w atodlongBMON
- bra.b assea17BMON
- assea22BMON:bsr.w atolong_BMON
- assea17BMON:move.b imsizeBMON,d1
- beq.b assea13BMON
-
- cmp.b #%01,d1
- beq.b assea14BMON
- cmp.b #%10,d1
- bne.w failBMON
- swap d0
- bsr.b assea15BMON
- swap d0
- bra.b assea15BMON
- assea13BMON:cmp.l #$ff,d0
- bhi.w failBMON
- assea14BMON:cmp.l #$ffff,d0
- bhi.w failBMON
- assea15BMON:bra.w storewordBMON
-
- assea3BMON: cmp.b #"(",(a3)+ ;(x.l),(x.w),(d,ax,rx.x)
- bne.w failBMON
- sf d2
- cmp.b #"-",(a3) ;sign?
- bne.b assea19BMON
- addq.w #1,a3
- st d2
- assea19BMON:move.w d2,-(a7)
- cmp.b #"$",(a3)
- beq.b assea24BMON
- bsr.w atodlongBMON
- bra.b assea23BMON
- assea24BMON:bsr.w atolong_BMON
- assea23BMON:move.w (a7)+,d2
- cmp.b #",",(a3) ;d( !(d, ?
- bne.w assea4BMON
- tst.b d2
- beq.b assea20BMON
- neg.l d0
- assea20BMON:addq.w #1,a3
- cmp.b #"a",(a3) ;d(ax !(d,ax
- bne.w assea5BMON
- move.l d0,-(a7)
- bsr.w assax02BMON
- move.l (a7)+,d0
- move.l d0,d1
- bpl.b assea21BMON
- neg.l d1
- assea21BMON:cmp.b #")",(a3)+ ;d(ax) !(d,ax)
- bne.b assea6BMON
- or.w #$0028,op68000
- cmp.l #$ffff,d1 ;abs(d0)
- bhi.w failBMON
- bra.w storewordBMON
- assea6BMON: cmp.b #",",-1(a3) ; !(d,ax,rx.x)
- bne.w failBMON
- or.w #$0030,op68000
- cmp.l #$ff,d1 ;abs(d0)
- bhi.w failBMON
- assea9BMON: and.w #$ff,d0
- cmp.b #"d",(a3)+
- beq.b assea7BMON
- cmp.b #"a",-1(a3)
- bne.w failBMON
- bset #15,d0
- assea7BMON: move.b (a3)+,d1
- sub.b #"0",d1
- bcs.w failBMON
- cmp.b #7,d1
- bhi.w failBMON
- ext.w d1
- ror.w #4,d1
- or.w d1,d0
- cmp.b #".",(a3)+
- bne.w failBMON
- cmp.b #"w",(a3)+
- beq.b assea8BMON
- cmp.b #"l",-1(a3)
- bne.w failBMON
- bset #11,d0
- assea8BMON: cmp.b #"*",(a3)
- bne.b assea8bBMON
- addq.w #1,a3
- moveq #-"1",d1
- add.b (a3)+,d1
- beq.b assea8bBMON
- or.w #%01000000000,d0
- subq.b #1,d1
- beq.b assea8bBMON
- eor.w #%11000000000,d0
- subq.b #2,d1
- beq.b assea8bBMON
- eor.w #%01000000000,d0
- subq.b #4,d1
- bne.w failBMON
- assea8bBMON:cmp.b #")",(a3)+ ;d(ax,rx.x) !(d,ax,rx.x)
- bne.w failBMON
- bra.w storewordBMON
- assea5BMON: cmp.b #"p",(a3)+
- bne.w failBMON
- cmp.b #"c",(a3)+
- bne.w failBMON
- cmp.b #")",(a3)+ ;d(pc) !(d,pc)
- bne.b assea10BMON
- or.w #$003a,op68000
- subq.l #2,d0 ;fixed instrBMON len
- sub.l lginstrBMON,d0 ;extension (mulx.l,cas2...)
- sub.l paraBMON,d0
- bsr.w storewordBMON
- move.l d0,d1
- ext.l d1
- cmp.l d0,d1
- bne.w failBMON
- rts
- assea10BMON:or.w #$003b,op68000
- subq.l #2,d0 ;fixed instrBMON len
- sub.l lginstrBMON,d0 ;extension (mulx.l,cas2...)
- sub.l paraBMON,d0
- move.b d0,d1
- ext.w d1
- ext.l d1
- cmp.l d1,d0
- bne.b assfailBMON
- cmp.b #",",-1(a3)
- beq.w assea9BMON ;d(pc,rx.x) !(d,pc,rx.x)
- assfailBMON:sf d7
- rts
- assea4BMON: cmp.b #")",(a3)+
- bne.w failBMON
- cmp.b #".",(a3)
- beq.b assea11BMON
- or.w #$0039,op68000
- swap d0
- bsr.w storewordBMON
- swap d0
- bra.w storewordBMON
- assea11BMON:addq.w #1,a3
- cmp.b #"w",(a3)+
- bne.w failBMON
- or.w #$0038,op68000
- cmp.l #$ffff,d0
- bhi.w failBMON
- bra.w storewordBMON
-
- ;---------------------------------------------------------------
- ifnd ccodetxtBMON
-
- ccodetxtBMON: dc.b "t",0,"f",0,"hilscccsneeqvcvsplmigeltgtle" ;even!
- pccodetxtBMON: dc.b "bsbclslcssscasacwswcisicgsgccscc" ;even!
- fccodetxtBMON: dc.l "f"<<24 ;fpu condition codes
- dc.l "eq"<<16
- dc.l "ogt"<<8
- dc.l "oge"<<8
- dc.l "olt"<<8
- dc.l "ole"<<8
- dc.l "ogl"<<8
- dc.l "or"<<16
- dc.l "un"<<16
- dc.l "ueq"<<8
- dc.l "ugt"<<8
- dc.l "uge"<<8
- dc.l "ult"<<8
- dc.l "ule"<<8
- dc.l "ne"<<16
- dc.l "t"<<24
- dc.l "sf"<<16
- dc.l "seq"<<8
- dc.l "gt"<<16
- dc.l "ge"<<16
- dc.l "lt"<<16
- dc.l "le"<<16
- dc.l "gl"<<16
- dc.l "gle"<<8
- dc.l "ngle"
- dc.l "ngl"<<8
- dc.l "nle"<<8
- dc.l "nlt"<<8
- dc.l "nge"<<8
- dc.l "ngt"<<8
- dc.l "sne"<<8
- dc.l "st"<<16
-
- fmconstBMON:dc.b "1","E"+$80,"P","i"+$80,"Log10(2",")"+$80,"e"+$80,"Log2(e",")"+$80
- dc.b "Log10(e",")"+$80,"0.","0"+$80,"ln(2",")"+$80,"ln(10",")"+$80
- dc.b "1"+$80,"1","0"+$80,"10","0"+$80
-
- usptxtBMON: dc.b "us","p"+$80
- toccrtxtBMON: dc.b ","
- ccrtxtBMON: dc.b "cc","r"+$80
- tosrtxtBMON: dc.b ","
- srtxtBMON: dc.b "s","r"+$80
- xbcdtxtBMON: dc.b "),-","("+$80
- cmpmtxtBMON: dc.b ")+,","("+$80
- even
- cregsBMON: dc.b $08,$08,"pcr",0 ;68060
- dc.b $08,$07,"srp",0 ;68040
- dc.b $08,$06,"urp",0 ;68040
- dc.b $08,$05,"mmur" ;68040
- dc.b $08,$04,"isp",0
- dc.b $08,$03,"msp",0
- dc.b $08,$02,"caar" ;68020/30 only
- dc.b $08,$01,"vbr",0
- dc.b $08,$00,"usp",0
- dc.b $00,$08,"busr" ;68060
- dc.b $00,$07,"dtt1" ;68040
- dc.b $00,$06,"dtt0" ;68040
- dc.b $00,$05,"itt1" ;68040
- dc.b $00,$04,"itt0" ;68040
- dc.b $00,$03,"tc",0,0 ;68040
- dc.b $00,$02,"cacr"
- dc.b $00,$01,"dfc",0
- dc.b $00,$00,"sfc",0
- dc.b $80
- pregsBMON: dc.b $08,"tt","0"+$80
- dc.b $0c,"tt","1"+$80
- dc.b $40,"t","c"+$80
- dc.b $44,"dr","p"+$80 ;68851 only
- dc.b $48,"sr","p"+$80
- dc.b $4c,"cr","p"+$80
- dc.b $50,"ca","l"+$80 ;68851 only
- dc.b $58,"sc","c"+$80 ;68851 only
- dc.b $5c,"a","c"+$80 ;68851 only
- dc.b $60,"mmus","r"+$80 ;68030 mmusr = 68851 psr
- dc.b $60,"ps","r"+$80 ;68030 mmusr = 68851 psr
- dc.b $64,"pcs","r"+$80 ;68851 only
- dc.b $ac,"va","l"+$80,0 ;68851 only
-
- sizemovBMON: dc.b "*blw",%11,%00,%10,%01
- dcbtxtBMON: dc.b "dc.b "!$80
-
- idctxBMON: dc.l "ndib" ;nc,dc,ic,bc
-
- endc
-
-
- paraBMON dc.l 0 ;address
-
- lineendBMON dc.l 0
-
- lginstrBMON dc.l 0
- oplen dc.w 0 ;nb word for instrBMON.
- op68000 dc.w 0,0,0,0,0,0,0 ;assembled instrBMON. here !!
- ifnd imsizeBMON
- imsizeBMON dc.b 0
- even
- endc
-
-